gopackagesdriver: Add additional labels#4474
Open
r-hang wants to merge 2 commits intobazel-contrib:masterfrom
Open
gopackagesdriver: Add additional labels#4474r-hang wants to merge 2 commits intobazel-contrib:masterfrom
r-hang wants to merge 2 commits intobazel-contrib:masterfrom
Conversation
When using the Bazel gopackagesdriver to analyze a rules_go project it's possible to run into missing packages errors that look like ``` /home/user/go/bazel-pkgdrv/execroot/__main__/bazel-out/ k8-fastbuild/example.go:8:7: could not import example.org/mock (missing package: "@//src/example.org/mock:go_default_library") ``` The root cause is that the gopackagesdriver aspect only traverses target's deps field to populate the package information in the driver registry. In cases where a target depends on another target that is not declared in the "deps" field this packages will be missing from the gopackagesdriver response. ref: https://github.com/bazel-contrib/rules_go/blob/master/go/tools/gopackagesdriver/aspect.bzl#L30 An example of this edge case is on-the-fly generated go code produced by a bazel rule where the bazel rule provides a static dependency in the rule implementation instead of relying soley on the deps attribute. In this situation, this package is still required for the package analysis to complete but it is missing from the gopackagesdriver response. This change adds a mechanism to the gopackagesdriver to specify packages that should always be added. ref bazel-contrib#4473
fmeum
reviewed
Oct 8, 2025
| buildWorkingDirectory = os.Getenv("BUILD_WORKING_DIRECTORY") | ||
| additionalAspects = strings.Fields(os.Getenv("GOPACKAGESDRIVER_BAZEL_ADDTL_ASPECTS")) | ||
| additionalKinds = strings.Fields(os.Getenv("GOPACKAGESDRIVER_BAZEL_KINDS")) | ||
| additionalLabels = strings.Fields(os.Getenv("GOPACKAGESDRIVER_BAZEL_ADDTL_LABELS")) |
Member
There was a problem hiding this comment.
Let's write this out, the abbreviation isn't that commonly used
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
When using the Bazel gopackagesdriver to analyze a rules_go project it's possible to run into missing packages errors that look like
The root cause is that the gopackagesdriver aspect only traverses target's deps field to populate the package information in the driver registry. In cases where a target depends on another target that is not declared in the "deps" field this packages will be missing from the gopackagesdriver response.
ref: https://github.com/bazel-contrib/rules_go/blob/master/go/tools/gopackagesdriver/aspect.bzl#L30
An example of this edge case is on-the-fly generated go code produced by a bazel rule where the bazel rule provides a static dependency in the rule implementation instead of relying soley on the deps attribute. In this situation, this package is still required for the package analysis to complete but it is missing from the gopackagesdriver response.
This change adds a mechanism to the gopackagesdriver to specify packages that should always be added.
ref #4473
What type of PR is this?
What does this PR do? Why is it needed?
Which issues(s) does this PR fix?
Fixes #
Other notes for review